package com.titaniume.completable;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

/**
 * @ProjectName: juc
 * @Package: com.titaniume.completable
 * @ClassName: CompleteableFutureDemo
 * @Author: titan
 * @Description:
 * @Date: 2021/11/28 23:11
 * @Version: 1.0
 */
public class CompleteableFutureDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {

        //异步调用 没有返回值

        CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(() -> {

            System.out.println(Thread.currentThread().getName() + "completableFuture1");
        });
         completableFuture1.get();

        //异步调用有返回值
        CompletableFuture<Integer> completableFuture2 = CompletableFuture.supplyAsync(() -> {
            System.out.println(Thread.currentThread().getName() + "completableFuture2");
            //模拟异常
            int  i = 1/0;
            return 1024;
        });

        //t:返回值 u:异常
       completableFuture2.whenComplete((t, u) -> {
            System.out.println("-----t:"+t);
            System.out.println("-----u:"+u);
        }).get();
    }
}
